package com.lw.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
// 导入 springdoc-openapi 相关注解
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 *  实体类。
 *
 * @author lw
 * @since 2025年04月29日 11:35:15
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
// 使用 @Schema 替代 @ApiModel
@Schema(name = "TbKey", description = "密钥实体类")
@Table("tb_key")
public class TbKey implements Serializable {

    // 添加 @Serial 注解
    @java.io.Serial
    private static final long serialVersionUID = 1L;

    @Id(keyType = KeyType.Auto)
    // 使用 @Schema 替代 @ApiModelProperty
    @Schema(description = "")
    private Integer id;

    /**
     * 名称
     */
    @Schema(description = "名称")
    private String name;

    /**
     * 密钥编号
     */
    @Schema(description = "密钥编号")
    private String keyNumber;

    /**
     * 类型
     */
    @Schema(description = "类型")
    private String type;

    /**
     * 服务对象名称
     */
    @Schema(description = "服务对象名称")
    private String serviceName;

    /**
     * 服务器名称
     */
    @Schema(description = "服务器名称")
    private String serverName;

    @Schema(description = "")
    private LocalDateTime createTime;

    @Schema(description = "")
    private LocalDateTime updateTime;

    /**
     * 状态
     */
    @Schema(description = "状态")
    private String status;


    /**
     * 硬盘序列号
     */
    @Schema(description = "硬盘序列号")
    private String diskSerial;
    /**
     * mac地址
     */
    @Schema(description = "mac地址")
    private String macId;

    /**
     * 生效日期
     */
    @Schema(description = "生效日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime effectiveDate;

    /**
     * 有效日期
     */
    @Schema(description = "有效日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime expiryDate;

    /**
     * 加密方式
     */
    @Schema(description = "加密方式")
    private String encryptionMethod;

    /**
     * 密钥文件路径
     */
    @Schema(description = "密钥文件路径")
    private String path;
}